热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

主体|发生_C++基础入门丨6.函数——定义调用和声明

篇首语:本文由编程笔记#小编为大家整理,主要介绍了C++基础入门丨6.函数——定义调用和声明相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了C++基础入门丨6. 函数——定义调用和声明相关的知识,希望对你有一定的参考价值。




操作系统:Windows 10
IDE:Visual Studio 2019



文章目录


    • 1 函数的定义
    • 2 函数的调用
    • 3 值传递
    • 4 函数的常见样式
    • 5 函数的声明
    • 6 函数的分文件编写




函数是一组一起执行一个任务的语句。每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。


函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。


C++ 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。


函数还有很多叫法,比如方法、子例程或程序,等等。


——https://www.runoob.com/cplusplus/c+±functions.html



1 函数的定义

函数的定义一般主要有5个步骤:

1、返回值类型

2、函数名

3、参数表列

4、函数体语句

5、return 表达式

语法:

返回值类型 函数名 (参数列表)

函数体语句
return表达式


  • 返回值类型 :一个函数可以返回一个值。在函数定义中
  • 函数名:给函数起个名称
  • 参数列表:使用该函数时,传入的数据
  • 函数体语句:花括号内的代码,函数内需要执行的语句
  • return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据

2 函数的调用

函数的调用即:使用我们定义好的函数。

语法: 函数名(参数)

#include<iostream>
using namespace std;
//函数定义
int add(int num1, int num2) //定义中的num1,num2称为形式参数&#xff0c;简称形参

int sum &#61; num1 &#43; num2;
return sum;

int main()
int a &#61; 1;
int b &#61; 1;
//调用add函数
int sum &#61; add(a, b);//调用时的a&#xff0c;b称为实际参数&#xff0c;简称实
cout << "sum &#61; " << sum << endl;
system("pause");
return 0;


  • 注意实参形参的区别。

3 值传递

函数的值传递也就是在函数调用时&#xff0c;实参将值传递给形参。

值传递时&#xff0c;如果形参发生&#xff0c;并不会影响实参。

#include
using namespace std;
void swap(int num1, int num2)

int temp &#61; num1;
num1 &#61; num2;
num2 &#61; temp;
cout << "交换后&#xff1a;" << endl;
cout << "num1 &#61; " << num1 << endl;
cout << "num2 &#61; " << num2 << endl;
//return ; 当函数声明时候&#xff0c;不需要返回值&#xff0c;可以不写return

int main()
int a &#61; 10;
int b &#61; 20;
swap(a, b);
cout << "main中的 a &#61; " << a << endl;
cout << "main中的 b &#61; " << b << endl;
system("pause");
return 0;


  • 形参的值发生交换&#xff0c;不影响实参的值。

4 函数的常见样式

4中常见的函数样式


样式代码示例
无参无返void test01()
有参无返void test02(int a)
无参有返int test03()
有参有返int test04(int a, int b)

5 函数的声明

函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。


  • 当在一个源文件中定义函数且在另一个文件中调用函数时&#xff0c;函数声明是必需的。在这种情况下&#xff0c;应该在调用函数的文件顶部声明函数。
  • 函数的声明可以多次&#xff0c;但是函数的定义只能有一次

函数声明&#xff1a;int max(int num1, int num2);



函数声明和函数定义的区别。



6 函数的分文件编写

函数的分文件编写主要作用是&#xff1a;让代码结构更加清晰。

函数分文件编写一般有4个步骤


  1. 创建后缀名为**.h**的头文件
  2. 创建后缀名为**.c&#43;&#43;**的源文件
  3. 在头文件中写函数的声明
  4. 在源文件中写函数的定义

示例&#xff1a;

//swap.h文件
#include
using namespace std;
//实现两个数字交换的函数声明
void swap(int a, int b);

//swap.c&#43;&#43;文件
#include "swap.h"
void swap(int a, int b)

int temp &#61; a;
a &#61; b;
b &#61; temp;
cout << "a &#61; " << a << endl;
cout << "b &#61; " << b << endl;

//main函数文件
#include "swap.h"
int main()

int a &#61; 100;
int b &#61; 200;
swap(a, b);
system("pause");
return 0;

—— END ——



Reference


  • [1]&#xff1a;https://www.bilibili.com/video/BV1VJ411M7WR


如果以上内容有任何错误或者不准确的地方&#xff0c;欢迎在下面 &#x1f447; 留言。或者你有更好的想法&#xff0c;欢迎一起交流学习~~~

更多精彩内容请前往 AXYZdong的博客


推荐阅读
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 本文介绍如何在 Visual Studio Code 中使用 Jupyter Notebook 插件,包括创建、编辑和运行笔记本的基本操作。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 异常要理解Java异常处理是如何工作的,需要掌握一下三种异常类型:检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常ÿ ... [详细]
  • 本文将探讨Java编程语言中对象和类的核心概念,帮助读者更好地理解和应用面向对象编程的思想。通过实际例子和代码演示,我们将揭示如何在Java中定义、创建和使用对象。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • JSOI2010 蔬菜庆典:树结构中的无限大权值问题
    本文探讨了 JSOI2010 的蔬菜庆典问题,主要关注如何处理非根非叶子节点的无限大权值情况。通过分析根节点及其子树的特性,提出了有效的解决方案,并详细解释了算法的实现过程。 ... [详细]
  • 利用jstack进行死锁检测与线程堆栈分析
    本文介绍了如何使用jstack工具进行Java应用中的死锁检测及高CPU使用率线程的堆栈分析,帮助开发者快速定位并解决性能瓶颈。 ... [详细]
  • Win10 UWP 开发技巧:利用 XamlTreeDump 获取 XAML 元素树
    本文介绍如何在 Win10 UWP 开发中使用 XamlTreeDump 库来获取和转换 XAML 元素树为 JSON 字符串,这对于 UI 单元测试非常有用。 ... [详细]
  • 初探Java编程:从入门到实践
    本文旨在为初学者提供Java编程的基础知识,涵盖程序、算法、流程图的概念,以及JDK环境的配置和Eclipse的使用方法。 ... [详细]
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
  • OBS (Open Broadcaster Software) 架构解析
    本文介绍 OBS(Open Broadcaster Software),一款专为直播设计的开源软件。文章将详细探讨其技术架构、核心组件及其开发环境要求。 ... [详细]
author-avatar
QX封面精选
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有